// 获取当前用户信息
async function onMe() {
  // 确保token已加载
  const currentToken = loadToken() || token;
  if (!currentToken) {
    showResult('meResultAdmin', { success: false, message: '请先登录' });
    return;
  }
  
  const resp = await request(api.me);
  
  if (resp.ok && resp.data && resp.data.success) {
    showResult('meResultAdmin', resp.data, true);
  } else {
    showResult('meResultAdmin', resp.data || { success: false, message: '获取用户信息失败' });
    if (resp.status === 401) {
      clearToken();
      window.location.href = 'login.html';
    }
  }
}

// 删除用户处理函数
async function onDelete(e) {
  e.preventDefault();
  const userId = e.target.userId.value.trim();
  
  if (!userId) {
    showResult('deleteResult', { success: false, message: '用户ID不能为空' });
    return;
  }
  
  const resp = await request(api.deleteUser(userId), { method: 'DELETE' });
  
  if (resp.ok && resp.data && resp.data.success) {
    showResult('deleteResult', resp.data, true);
    e.target.reset();
  } else {
    showResult('deleteResult', resp.data || { success: false, message: '删除用户失败' });
  }
}

// 创建用户处理函数
async function onCreateUser(e) {
  e.preventDefault();
  const formData = new FormData(e.target);
  const user = {};
  
  // 获取表单数据
  for (let [key, value] of formData.entries()) {
    if (value !== '') {
      user[key] = value;
    }
  }
  
  if (!user.username || !user.password) {
    showResult('createUserResult', { success: false, message: '用户名和密码不能为空' });
    return;
  }
  
  const resp = await request(api.createUser, { 
    method: 'POST', 
    body: JSON.stringify(user) 
  });
  
  if (resp.ok && resp.data && resp.data.success) {
    showResult('createUserResult', resp.data, true);
    e.target.reset();
  } else {
    showResult('createUserResult', resp.data || { success: false, message: '创建用户失败' });
  }
}

// 从模态框编辑用户处理函数
async function onEditUserFromModal(e) {
  e.preventDefault();
  const formData = new FormData(e.target);
  const user = {};
  const userId = formData.get('userId');
  
  if (!userId) {
    alert('用户ID不能为空');
    return;
  }
  
  // 获取表单数据（排除userId和空值）
  for (let [key, value] of formData.entries()) {
    // 排除userId和modifier字段
    if (key !== 'userId' && key !== 'modifier' && value !== '') {
      user[key] = value;
    }
  }
  
  // 移除userId字段，因为它是URL的一部分
  delete user.userId;
  
  const resp = await request(api.updateUser(userId), { 
    method: 'PUT', 
    body: JSON.stringify(user) 
  });
  
  if (resp.ok && resp.data && resp.data.success) {
    alert('用户信息更新成功');
    closeEditUserModal();
    // 重新搜索以刷新列表
    document.querySelector('#search-users-page form').dispatchEvent(new Event('submit'));
  } else {
    alert(resp.data?.message || '更新用户信息失败');
  }
}

// 从模态框重置密码处理函数
async function onResetPasswordFromModal(e) {
  e.preventDefault();
  const formData = new FormData(e.target);
  const userId = formData.get('userId');
  const newPassword = formData.get('newPassword');
  
  if (!userId) {
    alert('用户ID不能为空');
    return;
  }
  
  if (!newPassword) {
    alert('新密码不能为空');
    return;
  }
  
  const resetPasswordRequest = { newPassword: newPassword };
  
  const resp = await request(api.resetPassword(userId), { 
    method: 'PUT', 
    body: JSON.stringify(resetPasswordRequest) 
  });
  
  if (resp.ok && resp.data && resp.data.success) {
    alert('密码重置成功');
    closeResetPasswordModal();
  } else {
    alert(resp.data?.message || '重置密码失败');
  }
}

// 搜索用户处理函数
async function onSearchUsers(e) {
  e.preventDefault();
  const keyword = e.target.keyword.value.trim();
  const role = e.target.role.value.trim();
  const status = e.target.status.value.trim();
  const page = parseInt(e.target.page.value) || 1;
  const size = parseInt(e.target.size.value) || 10;
  
  const body = { keyword, role, status, page, size };
  const resp = await request(api.searchUsers, { 
    method: 'POST', 
    body: JSON.stringify(body) 
  });
  
  if (resp.ok && resp.data && resp.data.success) {
    showResult('searchUsersResult', resp.data, true);
    // 检查数据是否在data字段中（直接返回数组）或在records字段中
    if (resp.data.data) {
      renderTable(resp.data.data, 'searchUsersList');
    } else if (resp.data.records) {
      renderTable(resp.data.records, 'searchUsersList');
    }
  } else {
    showResult('searchUsersResult', resp.data || { success: false, message: '搜索用户失败' });
  }
}

// 列出用户处理函数
async function onListUsers(e) {
  e.preventDefault();
  const keyword = e.target.keyword.value.trim();
  const role = e.target.role.value.trim();
  const status = e.target.status.value.trim();
  const page = parseInt(e.target.page.value) || 1;
  const size = parseInt(e.target.size.value) || 10;
  
  const params = new URLSearchParams();
  if (keyword) params.append('keyword', keyword);
  if (role) params.append('role', role);
  if (status) params.append('status', status);
  params.append('page', page);
  params.append('size', size);
  
  const resp = await request(`${api.listUsers}?${params.toString()}`);
  
  if (resp.ok && resp.data && resp.data.success) {
    showResult('listUsersResult', resp.data, true);
    // 检查数据是否在data字段中（直接返回数组）或在list字段中
    if (resp.data.data) {
      renderTable(resp.data.data, 'listUsersList');
    } else if (resp.data.list) {
      renderTable(resp.data.list, 'listUsersList');
    }
  } else {
    showResult('listUsersResult', resp.data || { success: false, message: '查询用户列表失败' });
  }
}

// 渲染用户表格
function renderTable(users, containerId) {
  const container = document.getElementById(containerId);
  if (!users || users.length === 0) {
    container.innerHTML = '<p class="info">暂无用户数据</p>';
    return;
  }
  
  // 创建表格
  const table = document.createElement('table');
  table.className = 'user-table';
  
  // 表头
  const thead = document.createElement('thead');
  thead.innerHTML = `
    <tr>
      <th>ID</th>
      <th>用户名</th>
      <th>姓名</th>
      <th>邮箱</th>
      <th>手机</th>
      <th>角色</th>
      <th>状态</th>
      <th>最后登录时间</th>
      <th>创建人</th>
      <th>编辑人</th>
      <th>操作</th>
    </tr>
  `;
  
  // 表体
  const tbody = document.createElement('tbody');
  users.forEach(user => {
    const row = document.createElement('tr');
    // 格式化日期显示
    row.innerHTML = `
      <td>${user.id || user.userId || 'N/A'}</td> <!-- 确保 id 或 userId 字段正确显示 -->
      <td>${user.username || 'N/A'}</td>
      <td>${user.name || 'N/A'}</td>
      <td>${user.email || 'N/A'}</td>
      <td>${user.phone || 'N/A'}</td>
      <td>${user.role || 'N/A'}</td>
      <td>${user.status || 'N/A'}</td>
      <td>${user.lastLoginTime || 'N/A'}</td>
      <td>${user.creator || 'N/A'}</td>
      <td>${user.modifier || 'N/A'}</td>
      <td>
        <button onclick='openEditUserModal(${JSON.stringify(user)})' class="small">编辑</button>
        <button onclick='openResetPasswordModal(${JSON.stringify(user)})' class="small">重置密码</button>
      </td>
    `;
    tbody.appendChild(row);
  });
  
  // 组合表格
  table.appendChild(thead);
  table.appendChild(tbody);
  
  // 清空容器并添加表格
  container.innerHTML = '';
  container.appendChild(table);
}

// 加载管理员页面
function loadAdminPage() {
  // 在独立的管理员页面中，不需要导航
  console.log('[ADMIN] Admin page loaded successfully');
  // 页面加载时获取用户信息
  onMe();
}